package com.modern.devtools.demo;

import com.modern.devtools.model.Server;
import com.modern.devtools.service.ServerService;
import com.modern.devtools.utils.SecureStorageServiceImpl;

/**
 * 演示核心功能的简单示例
 */
public class DemoApplication {
    
    public static void main(String[] args) {
        System.out.println("=== 星盾运维平台 (Stardust Ops) 功能演示 ===\n");
        
        // 演示服务器管理功能
        demonstrateServerManagement();
        
        // 演示安全存储功能
        demonstrateSecureStorage();
        
        System.out.println("\n=== 演示完成 ===");
    }
    
    private static void demonstrateServerManagement() {
        System.out.println("1. 服务器管理功能演示:");
        
        // 创建服务器服务实例
        ServerService serverService = new ServerService();
        
        // 添加服务器
        Server server1 = new Server("srv001", "应用服务器1", "192.168.1.100", 22, "admin");
        server1.setPassword("securePassword123");
        server1.setGroup("Production");
        
        serverService.addServer(server1);
        System.out.println("   - 已添加服务器: " + server1.getName());
        
        Server server2 = new Server("srv002", "数据库服务器", "192.168.1.101", 22, "dbadmin");
        server2.setPassword("dbPassword456");
        server2.setGroup("Production");
        
        serverService.addServer(server2);
        System.out.println("   - 已添加服务器: " + server2.getName());
        
        System.out.println("   - 服务器总数: " + serverService.getServerCount());
        
        // 查找服务器
        var foundServer = serverService.getServerById("srv001");
        if (foundServer.isPresent()) {
            System.out.println("   - 找到服务器: " + foundServer.get().getName());
        }
        
        // 更新服务器
        Server updatedServer = new Server("srv001", "应用服务器1 (已更新)", "192.168.1.100", 22, "admin");
        updatedServer.setPassword("securePassword123");
        updatedServer.setGroup("Production");
        serverService.updateServer(updatedServer);
        
        var updatedFoundServer = serverService.getServerById("srv001");
        if (updatedFoundServer.isPresent()) {
            System.out.println("   - 服务器已更新: " + updatedFoundServer.get().getName());
        }
        
        System.out.println("   - 服务器管理功能演示完成\n");
    }
    
    private static void demonstrateSecureStorage() {
        System.out.println("2. 安全存储功能演示:");
        
        // 创建安全存储服务实例
        SecureStorageServiceImpl secureStorage = new SecureStorageServiceImpl();
        
        // 存储敏感信息
        String serverId = "srv001";
        String passwordKey = "server_" + serverId + "_password";
        String passwordValue = "mySecurePassword123!";
        
        secureStorage.storeSecret(passwordKey, passwordValue);
        System.out.println("   - 已存储密码密钥: " + passwordKey);
        
        // 检查是否存储成功
        if (secureStorage.hasSecret(passwordKey)) {
            System.out.println("   - 密钥存在验证: 通过");
        }
        
        // 检索敏感信息
        String retrievedPassword = secureStorage.retrieveSecret(passwordKey);
        System.out.println("   - 检索到的密码: " + (retrievedPassword != null ? "[已检索]" : "null"));
        
        // 验证检索的值是否正确
        if (passwordValue.equals(retrievedPassword)) {
            System.out.println("   - 密码验证: 正确");
        } else {
            System.out.println("   - 密码验证: 失败");
        }
        
        // 删除敏感信息
        secureStorage.deleteSecret(passwordKey);
        System.out.println("   - 已删除密钥: " + passwordKey);
        
        // 验证是否已删除
        if (!secureStorage.hasSecret(passwordKey)) {
            System.out.println("   - 删除验证: 通过");
        }
        
        System.out.println("   - 安全存储功能演示完成\n");
    }
}